package com.ruoyi.device.service.impl;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.device.mapper.UserAuthStatusMapper;
import com.ruoyi.device.domain.UserAuthStatus;
import com.ruoyi.device.service.IUserAuthStatusService;

/**
 * 用户认证状态Service业务层处理
 * 
 * @author ruoyi
 * @date 2025-10-18
 */
@Service
public class UserAuthStatusServiceImpl implements IUserAuthStatusService 
{
    @Autowired
    private UserAuthStatusMapper userAuthStatusMapper;

    /**
     * 查询用户认证状态
     * 
     * @param id 用户认证状态主键
     * @return 用户认证状态
     */
    @Override
    public UserAuthStatus selectUserAuthStatusById(Long id)
    {
        return userAuthStatusMapper.selectUserAuthStatusById(id);
    }

    /**
     * 查询用户认证状态列表
     * 
     * @param userAuthStatus 用户认证状态
     * @return 用户认证状态
     */
    @Override
    public List<UserAuthStatus> selectUserAuthStatusList(UserAuthStatus userAuthStatus)
    {
        return userAuthStatusMapper.selectUserAuthStatusList(userAuthStatus);
    }

    /**
     * 根据设备ID查询用户列表
     * 
     * @param deviceId 设备ID
     * @return 用户认证状态集合
     */
    @Override
    public List<UserAuthStatus> selectUserAuthStatusByDeviceId(String deviceId)
    {
        return userAuthStatusMapper.selectUserAuthStatusByDeviceId(deviceId);
    }

    /**
     * 新增用户认证状态
     * 
     * @param userAuthStatus 用户认证状态
     * @return 结果
     */
    @Override
    public int insertUserAuthStatus(UserAuthStatus userAuthStatus)
    {
        return userAuthStatusMapper.insertUserAuthStatus(userAuthStatus);
    }

    /**
     * 修改用户认证状态
     * 
     * @param userAuthStatus 用户认证状态
     * @return 结果
     */
    @Override
    public int updateUserAuthStatus(UserAuthStatus userAuthStatus)
    {
        return userAuthStatusMapper.updateUserAuthStatus(userAuthStatus);
    }

    /**
     * 批量删除用户认证状态
     * 
     * @param ids 需要删除的用户认证状态主键
     * @return 结果
     */
    @Override
    public int deleteUserAuthStatusByIds(Long[] ids)
    {
        return userAuthStatusMapper.deleteUserAuthStatusByIds(ids);
    }

    /**
     * 删除用户认证状态信息
     * 
     * @param id 用户认证状态主键
     * @return 结果
     */
    @Override
    public int deleteUserAuthStatusById(Long id)
    {
        return userAuthStatusMapper.deleteUserAuthStatusById(id);
    }

    /**
     * 踢出用户(设置状态为未认证)
     * 
     * @param id 用户ID
     * @return 结果
     */
    @Override
    public int kickoutUser(Long id)
    {
        return userAuthStatusMapper.kickoutUser(id);
    }

    /**
     * 延长用户上网时间
     * 
     * @param id 用户ID
     * @param extendMinutes 延长分钟数
     * @return 结果
     */
    @Override
    public int extendUserTime(Long id, Integer extendMinutes)
    {
        int extendSeconds = extendMinutes * 60;
        return userAuthStatusMapper.extendUserTime(id, extendSeconds);
    }

    /**
     * 拉黑用户MAC地址
     * 
     * @param id 用户ID
     * @param reason 拉黑原因
     * @return 结果
     */
    @Override
    public int blacklistUser(Long id, String reason)
    {
        // TODO: 实现MAC地址黑名单逻辑
        // 1. 获取用户MAC地址
        UserAuthStatus user = userAuthStatusMapper.selectUserAuthStatusById(id);
        if (user == null) {
            return 0;
        }
        
        // 2. 添加到黑名单表（需要创建blacklist表）
        // 3. 踢出用户
        return kickoutUser(id);
    }
}

